---
slug: /
sidebar_label: Introduction
title: Introduction to Rasa Action Servers
---

A Rasa action server runs [custom actions](https://rasa.com/docs/rasa/next/custom-actions) for a Rasa Open Source
conversational assistant. 

## How it works

When your assistant predicts a custom action, the Rasa server sends 
a `POST` request to the action server with a json payload including
the name of the predicted action,
the conversation ID, the contents of the tracker and the contents of the domain.

When the action server finishes running a custom action, it returns a json payload
of [responses](https://rasa.com/docs/rasa/next/responses) and [events](events.mdx). 
See the [API spec](api-spec.mdx) for details about the request and response payloads.

The Rasa server then returns the responses to the user and adds the events
to the conversation tracker. 


## SDKs for Custom Actions

You can use an action server written in any language to run your custom actions, as long as it implements
the [required APIs](api-spec.mdx).  

### Rasa SDK (Python)

Rasa SDK is a Python SDK for running custom actions. Besides implementing
the required APIs, it offers methods for interacting with the conversation tracker
and composing events and responses.
If you don't yet have an action server and don't need it
to be in a language other than Python, using the Rasa SDK will be the easiest way
to get started.

### Other Action Servers

If you have legacy code or existing business logic in another language,
you may not want to use the Rasa SDK. In this case you can write
your own action server in any language you want. The only requirement
for the action server is that it provide a `/webhook` endpoint which accepts HTTP `POST` requests
from the Rasa server and returns a payload of [events](events.mdx) and responses. 
See the [API spec](api-spec.mdx) for details about the required `/webhook` endpoint.
